#include "Date.h"
#include <list>
using namespace std;

// STL容器的插入接口都有一个emplace系列
int main()
{
	// 深拷贝的类
	//std::list<bit::string> mylist;
	// 没区别
	/*bit::string s1("1111");
	mylist.push_back(s1);
	mylist.emplace_back(s1);

	cout << endl;
	bit::string s2("2222");
	mylist.push_back(move(s1));
	mylist.emplace_back(move(s2));*/

	// 开始有区别
	//cout << endl;
	//mylist.push_back("3333");   // 构造匿名对象 + 移动构造
	//mylist.emplace_back("3333");// 直接构造

	// 浅拷贝的类
	// 没区别
	std::list<Date> list2;
	Date d1(2023, 5, 28);
	list2.push_back(d1);
	list2.emplace_back(d1);

	cout << endl;
	Date d2(2023, 5, 28);
	list2.push_back(move(d1));
	list2.emplace_back(move(d2));

	// 有区别
	cout << "=========================" << endl;
	list2.push_back(Date(2023, 5, 28));
	list2.push_back({ 2023, 5, 28 });

	cout << endl;
	list2.emplace_back(Date(2023, 5, 28)); // 构造+移动构造
	list2.emplace_back(2023, 5, 28);       // 直接构造
  
	return 0;
}
